Semantik Web • Hafta 01
Motivasyon, katman mimarisi, temel kavramlar ve dönem projesinin tanıtımı
Lisansüstü Semantik Web Dersi • CMPE 583 • 10 Haftalık Program
Ders Programı
| Hafta | Konu | Projeye Katkısı |
|---|---|---|
| 01 | Semantik Web'e Giriş | Problem tanımı, araç kurulumu |
| 02 | XML & XML Schema | Ürün verisinin yapılandırılması |
| 03 | RDF & RDFS | Triple modeli, sözlük |
| 04 | OWL Temelleri | Class, Property, Individual |
| 05 | OWL İleri & Protégé | Restriction, cardinality |
| 06 | OWL-S | Servis olarak öneri motoru |
| 07 | SWRL | 7 çıkarım kuralı (S1–S7) |
| 08 | Java ile OWL API-I | Ontolojinin programatik kurulumu |
| 09 | OWL API-II & Reasoner | HermiT / Pellet ile çıkarım |
| 10 | SWRL API & Final | Uçtan uca çalışan sistem |
Hafta 01 • Kazanımlar
01
Bugünün Web'i insanlar için yazıldı. Makineler için yazılmış bir Web nasıl görünürdü?
HTML, içeriğin nasıl görüneceğini anlatır; ne anlama geldiğini anlatmaz.
Tarayıcı için "Nisin" ile "36" arasında hiçbir tür farkı yoktur — ikisi de metin düğümüdür.
Bir yazılım bu sayfadan "bu ürün laktoz alerjisi olan biri için riskli mi?" sorusunu cevaplayamaz.
HTML
<p>Nisin</p>
Sunum. Makine: "metin".
XML
<katki>Nisin</katki>
Yapı. Makine: "katkı adlı alan".
OWL + SWRL
Nisin a FoodAdditives . Nisin Triggers Lactose .
Anlam. Makine: "laktoz alerjisini tetikler" → çıkarım yapabilir.
| Boyut | Geleneksel Web (Belge Web'i) | Semantik Web (Veri Web'i) |
|---|---|---|
| Temel birim | Sayfa / belge | Kaynak ve üçlü (triple) |
| Bağlantı | Adlandırılmamış köprü metni | Anlamı tanımlı ilişki (Triggers) |
| Anlam nerede | Okuyanın zihninde | Modelin içinde, formel |
| Erişim | Anahtar kelime araması | Sorgu + çıkarım (SPARQL / SQWRL) |
| Bütünleştirme | Elle eşleme | Ortak IRI ile kendiliğinden |
| Yeni bilgi | İnsan yazar | Reasoner ve kurallar üretir |
Veri
"Nisin"
Bağlamsız simge
Enformasyon
EAN_00004 Contain Nisin
Bağlama oturmuş veri
Bilgi
Nisin Triggers Lactose
İlişki + kural: çıkarım yapılabilir
Karar
PersonAtRisk(TC_001)
Eyleme dönüşen sonuç
Semantik Web teknolojileri bu merdivenin üçüncü basamağını makineye taşır; dördüncü basamak uygulama katmanının işidir.
| Soru | Anahtar kelime araması | Semantik sistem |
|---|---|---|
| "Nisin içeren ürünler" | Çalışır — metin eşleşmesi | Çalışır |
| "Laktoz alerjisi olanlar için riskli ürünler" | Başarısız — "laktoz" etikette yazmıyor | Katkı → alerji tetikleme zincirinden çıkarır |
| "Ayşe'nin seçtiği ürün ona uygun mu?" | Kişisel profil bilgisi yok | Kişi profili + ürün içeriği birlikte değerlendirilir |
Fark, veri miktarında değil: eksik olan şey ilişkilerin makine tarafından yorumlanabilir biçimde ifade edilmesi.
Dönem Projesi • Problem
Hedef sistem davranışı
Kullanıcı: laktoz alerjisi var, Eti Chocolate seçti.
Sistem: ürün Nisin içeriyor, Nisin Lactose tetikliyor → riskli.
| Barkod (birey) | Ürün adı | Katkı maddeleri | Tetiklenen alerji |
|---|---|---|---|
| EAN_00001 | ETI Cracker | Alginic_Acid | Gluten |
| EAN_00002 | Ulker Damak | Phospore, Soy_Lecitin | Egg |
| EAN_00003 | Dardanel Ton | Casein, Sodium_Ascorbite | Lactose, Fish |
| EAN_00004 | Eti Chocolate | Ascorbic_Acid, Nisin, Soy_Lecitin | Lactose, Egg |
Son kolon etikette yazmaz — ontolojideki Triggers ilişkisinden gelir.
Semantik Web, bilginin makineler tarafından işlenebilir bir anlam taşıdığı, mevcut Web'in bir uzantısıdır.
Berners-Lee, Hendler & Lassila, The Semantic Web, Scientific American, 2001 — fikrin özeti
Okunabilir
Ayrıştırılabilir sözdizimi: CSV, JSON, XML. Makine alanları görür, ilişkileri bilmez.
{"katki":"Nisin"}
Anlaşılabilir
Formel semantiği olan model: RDF/OWL. Makine türü, kısıtı ve sonucu çıkarır.
Nisin Triggers Lactose .
| Yaklaşım | Güçlü yanı | Sınırı |
|---|---|---|
| İlişkisel tablo | Hız, olgunluk | Şema dışı ilişki, çıkarım yok |
| Kavram haritası | İnsana açık | Formel semantiği yok |
| Çerçeve (frame) sistemleri | Nesne benzeri modelleme | Standart çıkarım yok |
| Tanımlama mantığı (OWL) | Karar verilebilir çıkarım, standart | İfade gücü sınırlı (aritmetik yok) |
| Kural tabanlı (SWRL) | Zincirleme, built-in aritmetik | Karar verilebilirlik için DL-safe kısıt |
Projemiz son iki satırı birlikte kullanır: yapı OWL ile, hesap ve zincir SWRL ile modellenir.
02
Her katman altındakine dayanır: tanımlama, sözdizimi, veri, sözlük, mantık, kural, sorgu.
Aynı ontoloji birden çok serileştirme ile yazılabilir. Projemizin dosyası RDF/XML biçimindedir.
Hafta 02'de XML Schema ile doğrulama, Hafta 03'te Turtle sözdizimi ayrıntılı işlenecek.
Her ok bir üçlüdür: özne – yüklem – nesne. Üçlüler birleşince bir graf oluşur; grafın üzerinde yürüyerek yeni bilgi çıkarılır.
Çıkarım örneği: Adult(TC_001) → Person(TC_001).
| İhtiyaç | RDFS | OWL |
|---|---|---|
| Sınıf hiyerarşisi | Var | Var |
| Ayrıklık (disjoint) | Yok | owl:AllDisjointClasses |
| Kısıt (restriction) | Yok | someValuesFrom, allValuesFrom |
| Sayı kısıtı | Yok | minCardinality |
| Denklik / özdeşlik | Yok | equivalentClass, sameAs |
Projede Person, Product, FoodAdditives, Allergy sınıfları ayrık tanımlıdır — bir birey aynı anda hem ürün hem kişi olamaz.
SPARQL
RDF grafı üzerinde standart sorgu dili (W3C).
SQWRL
SWRL üzerine kurulu sorgu dili; kural çıktıları üzerinde çalışır (Hafta 10).
OWL sınıf tanımlarında güçlüdür; ancak birden çok özelliği zincirleyip yeni bir ilişki üretmek ve aritmetik OWL'un dışındadır.
Bu kural, projedeki risk analizinin çekirdeğidir; Hafta 07'de ayrıntılı işlenecek.
Tutarlılık
Ontoloji çelişki içeriyor mu? isConsistent()
Sınıflandırma
Hangi sınıf hangisinin altına düşer? Gizli hiyerarşi ortaya çıkar.
Gerçekleme
Her birey hangi sınıfların üyesi? getTypes()
Projede HermiT bu üç işi yapar; SWRL kurallarını ise Drools tabanlı SWRL kural motoru çalıştırır (Hafta 09–10).
| Katman | Projedeki karşılığı | Hafta |
|---|---|---|
| IRI | http://EMU/AllergyOntology# | 01 |
| XML | ALLERGY_FIXED.owl (RDF/XML) | 02 |
| RDF / RDFS | Triple'lar, subClassOf, domain/range | 03 |
| OWL | 4 sınıf, 10 özellik, ayrık sınıflar, kısıtlar | 04–05 |
| Servis | OWL-S ile öneri servisi tanımı | 06 |
| Kural | S1–S7 SWRL kuralları | 07 |
| API | OWL API + SWRL API (Java, NetBeans) | 08–10 |
| Sorgu | SQWRL sorguları (Q1–Q3) | 10 |
03
Ontoloji, sınıf, özellik, birey, aksiyom ve çıkarım.
Bir paylaşılan kavramsallaştırmanın formel ve açık belirtimi.
Formel
Makine yorumlayabilir
Açık
Kavramlar yazılı tanımlı
Paylaşılan
Topluluk üzerinde uzlaşır
Kavramsallaştırma
Alanın soyut modeli
| Yapı | İfade gücü | Gıda örneği |
|---|---|---|
| Terim listesi | Sadece isimler | Katkı maddesi adları listesi |
| Taksonomi | Alt/üst ilişkisi | Katkı → koruyucu → Nisin |
| Tezaurus | Eşanlam, ilişkili terim | Casein ≈ süt proteini |
| Ontoloji | Kısıt + mantık + çıkarım | "Nisin içeren ürün laktoz alerjisi olan için risklidir" |
Projemiz en alt satırdadır: kısıtlar ve kurallar sayesinde sistem yazılmayan bilgiyi üretir.
| Kavram | Anlamı | Projedeki örnek |
|---|---|---|
| Class | Bireyler kümesi | Person, Product, FoodAdditives, Allergy |
| Object Property | Birey → birey ilişkisi | Contain, Triggers, hasAllergy, ChooseProduct |
| Datatype Property | Birey → veri değeri | hasAge, hasWeight, hasHeight, hasBMI, hasName |
| Individual | Somut nesne | TC_001, EAN_00004, Nisin, Lactose |
| Axiom | Doğru kabul edilen ifade | Adult ⊑ Person, sınıfların ayrıklığı |
Risk zinciri bu dört sınıf arasında dolaşır: Person → Product → FoodAdditives → Allergy ve geri Person.
Java tarafında her varlığa bu şekilde erişilir. Namespace'i yanlış yazmak, "sınıf bulunamadı" değil sessizce boş sonuç üretir — en sık yapılan hatadır.
Ontolojide yazılmamış olan yanlış değildir; yalnızca bilinmiyordur.
Bu yüzden "bu üründe alerjen yok" sonucu, ancak bir kapalılık aksiyomu (örn. cardinality) eklenirse çıkarılabilir.
Projeden örnek
EAN_00001 Contain Alginic_Acid .
Bu ürün yalnızca Alginic_Acid içerir demiyoruz. Başka katkılar da olabilir — henüz bilinmiyor.
İki farklı IRI, aksi belirtilmedikçe aynı nesneyi gösterebilir. Gıda alanında bu kural değil, gerçektir: aynı katkı farklı ülkelerde farklı adla anılır.
Ayrıklık ve farklılık aksiyomları olmadan reasoner "belki aynıdır" der ve beklediğiniz çelişkiyi bulmaz.
| Boyut | İlişkisel veritabanı (CWA) | Ontoloji (OWA) |
|---|---|---|
| Eksik veri | Yok sayılır → yanlış | Bilinmiyor |
| Şema | Kısıtlayıcı, veriyi reddeder | Betimleyici, çıkarım üretir |
| Aynı isim | Anahtar tekilliği | sameAs ile bağlanır |
| Yeni bilgi | INSERT ile | Çıkarım ile de |
| Tutarsızlık | Kısıt ihlali | Mantıksal çelişki (reasoner bulur) |
Sık hata: ontolojiyi tablo gibi kurup "neden çıkarım gelmiyor" diye sormak.
Hiçbiri dosyaya elle yazılmadı; üçü de kural motorunun ürünü. Bu, projenin son çıktısıdır.
04
SWRL tabanlı semantik paketli gıda analiz ve akıllı öneri sistemi.
Teslim edilen çıktı
ALLERGY_FIXED.owl AllergyReasoner (Maven projesi) ALLERGY_INFERRED.owl konsol raporu
Sekiz adımlı akış Main.java içinde birebir bu sırayla kodlanmıştır (ADIM 1 … ADIM 8).
Adult ve PersonAtRisk sınıfları elle doldurulmaz; üyeleri kurallardan gelir.
Dört alerjene özgü özellik (Egg_, Fish_, Gluten_, Lactose_Allergen) tek bir üst özelliğin altındadır: Effected_Allergen.
| Özellik | Tip | Kaynak |
|---|---|---|
| hasName | string | elle |
| hasAge | int | elle |
| hasWeight | double | elle |
| hasHeight | double | elle |
| hasBMI | double | S4 kuralı |
Ürün ile alerji arasında doğrudan bağ yoktur; bağ katkı maddesi üzerinden kurulur — modelin en önemli tasarım kararı.
| Birey | Ad | Yaş | Kilo / Boy | Alerji | Seçtiği ürün |
|---|---|---|---|---|---|
| TC_001 | Ayse | 38 | 67.5 / 1.68 | Lactose | EAN_00004 |
| TC_002 | FATMA | 13 | 84.6 / 1.73 | Lactose | EAN_00003 |
| TC_003 | MEHMET | 35 | 93.0 / 1.87 | Fish, Lactose | EAN_00003 |
| TC_004 | AYNUR | 54 | 91.0 / 1.65 | Egg, Gluten | EAN_00002 |
TC_002 on üç yaşındadır: S5 kuralı ile Adult çıkarımı yapılmayacak — kuralın negatif test durumu.
| Kural | Amacı | Ürettiği bilgi |
|---|---|---|
| S1_FishRisk | Sodium Ascorbate → balık riski | Fish_Allergen |
| S2_LactoseCasein | Casein → laktoz riski | Lactose_Allergen |
| S3_LactoseNisin | Nisin → laktoz riski | Lactose_Allergen |
| S4_BMI | Kilo ve boydan BMI hesabı | hasBMI (built-in aritmetik) |
| S5_Adult | Yaş ≥ 18 | Adult |
| S6_GenericAllergen | Genel risk zinciri | Effected_Allergen |
| S7_RiskClass | Etkilenen kişiyi sınıflandır | PersonAtRisk |
| Kişi | w / h | Çıkarılan BMI |
|---|---|---|
| TC_001 | 67.5 / 1.68 | 23.92 |
| TC_003 | 93.0 / 1.87 | 26.60 |
| TC_004 | 91.0 / 1.65 | 33.43 |
Şematik gösterim — sekme adları ve panel yerleşimi gerçek Protégé oturumuyla eşleşir.
Turuncu satırlar kural motorunun ekledikleridir; Protégé çıkarılan bildirimleri farklı renkte gösterir.
Üç düğmenin sırası önemlidir; Hafta 07 ve 10'da bu akış ayrıntılı gösterilecek.
Kural öncesi boş olan PersonAtRisk listesinin dolması, sistemin çalıştığının kanıtıdır.
| Araç | Rolü | Not |
|---|---|---|
| Protégé 5.5+ | Ontoloji ve kural düzenleme | SWRLTab eklentisi ile |
| Java JDK 8 / 11 | Çalıştırma ortamı | SWRL API uyumu için 8 önerilir |
| NetBeans | IDE | Maven projesi desteği |
| OWL API 4.x | Ontolojiyi programatik yönetme | Maven bağımlılığı |
| SWRL API + Drools | Kural motoru | swrlapi-drools-engine |
| HermiT / Pellet | Reasoner | Tutarlılık ve sınıflandırma |
Hafta 08'de pom.xml bağımlılıkları satır satır kurulacaktır.
05
Hafta 01 teslimi: çalışma ortamı + ilk kavram haritası.
Teslim
2–3 sayfa PDF: ekran görüntüleri, ürün tablosu, önerilen kavram listesi (sınıf / özellik / birey ayrımı yapılmış).
Hafta 02'nin sonunda bu ödevin ayrıntılı çözümü ayrı bir bölüm olarak sunulacaktır.
| Ölçüt | Ağırlık | Beklenen |
|---|---|---|
| Ortam kurulumu | 20% | Protégé + SWRLTab + JDK + NetBeans çalışıyor |
| Ontoloji okuma | 25% | Sınıf, özellik, birey sayıları ve rolleri doğru |
| Alan analizi | 35% | Katkı → alerji eşlemesi gerekçeli |
| Kavram ayrımı | 20% | Sınıf ile birey karıştırılmamış |
En sık hata: Nisin gibi somut bir katkıyı sınıf olarak modellemek.
Özet • 1 / 2
Özet • 2 / 2
Hafta 02'de
XML & XML Schema: ürün verisinin yapılandırılması, XSD ile doğrulama ve RDF/XML sözdizimine hazırlık.
Ayrıca: Ödev 1'in ayrıntılı çözümü.
Tekrar Soruları
Alıştırma • Sınıf içi
Etiketinde Whey Protein ve Wheat Starch yazan bir bisküvi (EAN_00005) ontolojiye ekleniyor.
Yazacağınız üçlüler (şablon)
EAN_00005 a Product . EAN_00005 Contain ________ . ________ a FoodAdditives . ________ Triggers ________ .
Çözüm Hafta 02'nin ödev çözümü bölümünde verilecek.